#include <stdio.h>  
#include <stdlib.h>
#include <string.h>
#define MAX 30

typedef struct{

	int nbsom;
	int nbArcs;
	int** mat;
}MatIncidence;

typedef struct MatriceAdj_{

	int nbSom;
	//int** mat;
	int mat[15][15];
}MatriceAdj;

typedef struct cellule{
	int nbSommet;
	struct cellule * suiv;
}*liste;

void Affichage();
void Affichage2();
void Traiter();

int main() {

	//Affichage("matrice2.txt");
	//Affichage2("Graphe.txt");
	Traiter();

  system("PAUSE");
return 0;

}

void Traiter() {

//indice de boucles
int i;
int j;

int a,b,s,d;
int nbSucc;
MatriceAdj matA;
liste A[10];

// nbarc pour Matrice Incidence?
int nbArc;

//matA = (MatriceAdj) malloc(sizeof(MatriceAdj));


// Ouverture du fichier 1) texte 2) en mode lecture
FILE* f = fopen("Graphe.txt","r");

	if(f==NULL){
		printf("\nErreur Ouverture ");
		exit(1);
	}

	fscanf(f, "nbsommets=%d\n", &matA.nbSom);

	// Initialise la matrice à zéro
	for(i=0;i<matA.nbSom;i++) {
		for(j=1;j<=matA.nbSom;j++) {	
			matA.mat[i][j]=0;
		}
	}
	

	for(i=0;i<matA.nbSom;i++) {
		fscanf(f,"sommet=%d nbsucc=%d succ=",&a,&nbSucc);
		
		for(j=1;j<=nbSucc;j++) {
			//if(j==1) printf("succ:");
			fscanf(f,"%d ",&d);
			matA.mat[a][d]=1;
			//printf("%d ",d);
		}
		fscanf(f,"\n");
	}
	fclose(f);


   /*//Affiche la liste
    printf("liste");
   	for(i=0;i<matA.nbSom;i++) {
       while(A[i]->suiv!=NULL){
          printf("%d ",A[i]->nbSommet);
          A[i]=A[i]->suiv;
       }
       printf("\n");
    }*/

	// Affiche la matrice Adj
	for(i=0;i<matA.nbSom;i++) {
		for(j=1;j<=matA.nbSom;j++) {	
			printf("%d ",matA.mat[i][j]);
		}
		printf("\n");
	}

}

void Affichage2(char *nom) {

//indice de boucles
int i;
int j;

int a,b,s,d;
int nbSom;
int nbSucc;
// nbarc pour Matrice Incidence?

int nbArc;
// Ouverture du fichier 1) texte 2) en mode lecture
FILE* f = fopen(nom,"r");

	if(f==NULL){
		printf("\nErreur Ouverture ");
		exit(1);
	}

	fscanf(f, "nbsommets=%d nbarcs=%d\n", &nbSom,&nbArc);
	printf("\nnb sommets: %d nbarcs:%d\n",nbSom,nbArc);
	

	for(i=0;i<nbSom;i++) {
		fscanf(f,"sommet=%d nbsucc=%d succ=",&s,&nbSucc);
		printf("\nSommet: %d ",s);
		printf("nb succ: %d ",nbSucc);
		
		for(j=1;j<=nbSucc;j++) {
			if(j==1) printf("succ:");
			fscanf(f,"%d ",&d);
			printf("%d ",d);
		}
		fscanf(f," ");
	}
	fclose(f);
}

void Affichage(char nom[MAX]) {

char v[30];
//int indLigne=0;
int count;
char EndChar;

// Ouverture du fichier 1) texte 2) en mode lecture
FILE* MonFichier = fopen(nom,"r");


// Lecture du contenu
while((count = fscanf(MonFichier, "%s%c", v, &EndChar))!=EOF){

	//indLigne = atoi(v);
	//printf("%d",indLigne);
	printf("%s",v);
              switch(EndChar){        
              case '\0' : printf("nul");break;
              case '\n': printf("\n");break;
              case ' ': printf(" "); break;
              default: printf("%s",v);           
              }
	}
}
